package Leetcode第二期;

/**
 * @author : K k
 * @date : 13:06 2020/10/8
 * 给你两个二进制字符串，返回它们的和（用二进制表示）。
 *
 * 输入为 非空 字符串且只包含数字 1 和 0。
 *
 *  
 *
 * 示例 1:
 *
 * 输入: a = "11", b = "1"
 * 输出: "100"
 * 示例 2:
 *
 * 输入: a = "1010", b = "1011"
 * 输出: "10101"
 */
public class 二进制求和_67 {
    public String addBinary(String a, String b) {
        StringBuilder sb=new StringBuilder();
        int carry=0;
        int i=a.length()-1,j=b.length()-1;
        while(i>=0 || j>=0){
            int x= i>=0?a.charAt(i--)-'0':0;
            int y= j>=0?b.charAt(j--)-'0':0;
            int sum=(x+y+carry)%2;
            carry= (x+y+carry)/2;
            sb.append(sum);
        }
        if (carry==1){
            sb.append(carry);
        }
        return sb.reverse().toString();
    }

    public static void main(String[] args) {
        二进制求和_67 x=new 二进制求和_67();
        System.out.println(x.addBinary("1010", "1011"));
    }
}
